package miguel.seriesly;

import miguel.objects.Serie;
import miguel.seriesly.R;
import miguel.utils.DownloadHelper;
import miguel.utils.ManejoSD;
import miguel.utils.SeriesLySQLiteHelper;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class PantallaVerSeries extends Activity {
	public static final String TAG = PantallaVerSeries.class.getName();
	Serie[] series;
	
	@Override
	public void onConfigurationChanged(Configuration newConfig) {
		super.onConfigurationChanged(newConfig);
	}
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.pantallaverseries);
		
		Bundle bundle = getIntent().getExtras();

		new cargarSeries().execute(bundle.getString("estado"));
	}
	
	private class cargarSeries extends AsyncTask<String, Void, Void> {
		ProgressDialog pd;
		MisSeriesAdapter adaptador;
		
		//Método que se hace en segundo plano
		@Override
		protected Void doInBackground(String... params) {
			//Cargamos el contenido de la serie
	    	adaptador = new MisSeriesAdapter(params[0]);
	    	
			return null;
		}
		
		//Método que se llama al terminal doInBackground
		@Override
		protected void onPostExecute(Void result) {
			//Si está cargado el ProgressBar lo descargamos
			if(pd != null) {
				pd.dismiss();
				pd = null;
			}
			
			//Mostramos el contenido en la lista
			ListView lista = (ListView)findViewById(R.id.lstSeries);
			lista.setAdapter(adaptador);
		}
		
		//Método que se llama al principio de la ejecución
		@Override
		protected void onPreExecute() {
			//Inicializamos el ProgressDialog
			pd = new ProgressDialog(PantallaVerSeries.this, R.style.FondoTransparente);
			pd.setTitle(R.string.espere);
			pd.setMessage(getString(R.string.cargandoSeries));
			pd.setCancelable(false);
			pd.show();
			
			
			super.onPreExecute();
		}
	}
	
	private void mostrarSerie(Serie s) {
		Intent intent = new Intent(PantallaVerSeries.this, PantallaVerDatosSerie.class);
		
		intent.putExtra("idSerie", s.getIdSerie());
		startActivity(intent);
	}
	
	private class MisSeriesAdapter extends BaseAdapter {
		Serie[] series = new Serie[0];
		Bitmap[] imagenesSeries;

		public MisSeriesAdapter(String estado) {
			
			SeriesLySQLiteHelper sqlSeries = new SeriesLySQLiteHelper(PantallaVerSeries.this, "DB_SeriesLy", null, 1);
			ManejoSD manejoSD = new ManejoSD();
			
			if(estado.equals("All")) {
				series = sqlSeries.obtenerSeries();
				imagenesSeries = new Bitmap[series.length];
				
				for(int i=0; i<series.length; i++) {
					imagenesSeries[i] = series[i].getSmall_thumb_bitmap();
				}
			} else {
				Serie[] todasSeries = sqlSeries.obtenerSeries();
				
				int contadorSeriesPendientes = 0;
				for(int i=0; i<todasSeries.length; i++) {
					if(todasSeries[i].getStatus().equals(estado)) { //"2" es pendiente
						contadorSeriesPendientes++;
					}
				}
				
				series = new Serie[contadorSeriesPendientes];
				//Guardamos las series
				int numSeriesGuardadas = 0;
				for(int i=0; i<todasSeries.length; i++) {
					if(todasSeries[i].getStatus().equals(estado)) {
						series[numSeriesGuardadas] = todasSeries[i];
						numSeriesGuardadas++;
					}
				}
				
				//Cargamos las imagenes
				imagenesSeries = new Bitmap[series.length];
				int imagenesCargadas = 0;
				for(int i=0; i<todasSeries.length; i++) {
					if(todasSeries[i].getStatus().equals(estado)) {
						imagenesSeries[imagenesCargadas] = series[imagenesCargadas].getSmall_thumb_bitmap();
						imagenesCargadas++;
					}
				}
			}
		}

		@Override
		public int getCount() {
			return series.length;
		}

		@Override
		public Serie getItem(int position) {
			return series[position];
		}

		@Override
		public long getItemId(int position) {
			return 0;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			View v = convertView;
			final Serie s = getItem(position);
			
			if(v == null) {
				v = View.inflate(PantallaVerSeries.this, R.layout.listitemverseries, null);
				v.setClickable(true);
				v.setFocusable(true);
				
				//Cuado clickamos sobre la serie
				v.setOnClickListener(new View.OnClickListener() {
					@Override
					public void onClick(View v) {
						mostrarSerie(s);
					}
				});
			}
			
			TextView text = (TextView) v.findViewById(R.id.nombreSerie);
			ImageView img = (ImageView) v.findViewById(R.id.imgSerie);
			
			text.setText(s.getTitle());
			
			img.setImageBitmap(imagenesSeries[position]);

			return v;
		}
	}	
}
